﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using SIMCObjetoNegocio;
using SIMCPresenter;
using System.Data;

public partial class WebUserControls_WUCConsultarPortafolio : System.Web.UI.UserControl,
    IDetallePortafolioView, ISeguridadDetallePortafolioView
{
    private DetallePortafolioPresenter m_Presenter;
    private List<Usuario> usuarios;
    private Usuario usuario;
    private ServicioSeguridad.Service1Client servicio;

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        usuario = ((Usuario)Session["Usuario"]);
        m_Presenter = new DetallePortafolioPresenter(this);        
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        servicio = new ServicioSeguridad.Service1Client();
        if (!IsPostBack)
        {
            if (Iniciar != null)
            {
                Iniciar(null, new SearchEventArgs<int>(IdPortafolio));
            }
        }
    }

    public int IdPortafolio
    {
        get
        {
            if (Request.QueryString["idportafolio"] != null)
            {
                ((SessionVariable)Session["variable"]).IdPortafolio =
                    Convert.ToInt32(Request.QueryString["idportafolio"].ToString());

                return (Convert.ToInt32(Request.QueryString["idportafolio"].ToString()));
            }

            return 0;
        }
    }

    public void MostrarMensaje(string p_Mensaje, bool p_Exito)
    {
        lblMensaje.Text = p_Mensaje;
        lblMensaje.ForeColor = p_Exito ? System.Drawing.Color.Green : System.Drawing.Color.Red;
    }

    public int IdUsuario
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
        }
    }

    public string ObjetoSeguridad
    {
        get { throw new NotImplementedException(); }
    }

    protected void gvUsuarios_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string comando = e.CommandName;
        int index = Convert.ToInt32(e.CommandArgument);

        int idPortafoliousuario = Convert.ToInt32(gvUsuarios.Rows[index].Cells[0].Text);
        string username = gvUsuarios.Rows[index].Cells[1].Text;

        switch (comando)
        {
            case "Selecc":
                Response.Redirect("~/Portafolios/wfModificarPortafolio.aspx" + "?idportafolio="
                    + IdPortafolio + "&idportafoliousuario=" + idPortafoliousuario + "&usuario=" + username);
                break;
        }
    }

    public event EventHandler<SearchEventArgs<int>> Iniciar;

    public Portafolio ViewData
    {        
        set
        {
            lblActivoInactivo.Text = value.Estado.ToString();
            lblDivisa.Text = value.DivisaBase;
            lblFechaCreacion.Text = value.FechaCreacion.Value.ToString("dd/MM/yyyy");
            lblNombreGerente.Text = value.NombreGerente;
            hplNombreTitular.Text = value.NombreTitular;
            hplNombreTitular.NavigateUrl = "~/Administracion/wfTitularCuenta.aspx?idTitular=" + value.IdTitular;
            lblNotas.Text = value.Notas;
            lblNumContrato.Text = value.NumeroContrato;
            lblTipoPortafolio.Text = value.DescripcionTipoPortafolio;
            lblTipoCartera.Text = value.DescripcionTipoCarteraAdministrada;
        }
    }

    public List<PortafolioDeUsuario> ListaUsuarios
    {
        set
        {
            if (value != null)
            {
                usuarios = new List<Usuario>();

                DataTable tabla = new DataTable();

                tabla.Columns.Add("IdPortafolioUsuario");
                tabla.Columns.Add("UserName");
                tabla.Columns.Add("NombreCompleto");
                tabla.Columns.Add("Email");
                tabla.Columns.Add("Estado");

                foreach (PortafolioDeUsuario pU in value)
                {
                    Usuario usuario = servicio.GetUsuarioPorLogin(pU.UserName)[0];
                    DataRow fila = tabla.NewRow();
                    fila["IdPortafolioUsuario"] = pU.Id;
                    fila["UserName"] = usuario.NombreUsuario;
                    fila["NombreCompleto"] = usuario.NombreCompleto;
                    fila["Email"] = usuario.Email;
                    fila["Estado"] = pU.Estado.ToString();

                    tabla.Rows.Add(fila);
                }

                gvUsuarios.DataSource = tabla;
                gvUsuarios.DataBind();
            }
        }
    }

    public bool PuedeVerAsociaciones
    {
        set { divAsociaciones.Visible = value; }
    }

    public bool EsUsuarioInterno
    {
        get { return (usuario.TipoUsuario == TipoUsuario.Interno); }
    }

    public Rol RolUsuario
    {
        get
        {
            return usuario.Rol;
        }
        set
        {
            usuario.Rol = value;
        }
    }


    public DateTime fechaPortafolios
    {
        get { return ((SessionVariable)Session["variable"]).FechaPortafolio; }
    }
   
}